/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.isfd.service;


import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdModelManagementNecessaryItemsBo;
import com.comac.ins.isfd.domain.bo.query.IsfdModelManagementNecessaryItemsQueryBo;
import com.comac.ins.isfd.domain.vo.IsfdModelManagementNecessaryItemsVo;
import com.comac.ins.isfd.domain.vo.IsfdModelManagementStructureDefinitionTreeNodeVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Collection;
import java.util.List;

/**
 * 必备件库Service接口
 *
 * @author Lion Li
 * @date 2024-08-19
 */
public interface IIsfdModelManagementNecessaryItemsService {

    /**
     * 查询必备件库
     *
     * @param id 主键
     * @return 必备件库
     */
    IsfdModelManagementNecessaryItemsVo queryById(Long id);


    /**
     * 必备件关联的模型管理左侧树查询
     */
    List<IsfdModelManagementStructureDefinitionTreeNodeVo> listTree();


    /**
     * 根据部段查询组件列表
     */
    List<IsfdModelManagementStructureDefinitionTreeNodeVo> getComponentList(String modelNumber, String batchNumber, String sectionNumber, Boolean needCount);

    /**
     * 分页查询必备件库列表
     */
    TableDataInfo<IsfdModelManagementNecessaryItemsVo> queryPageList(IsfdModelManagementNecessaryItemsQueryBo bo);

    /**
     * 查询符合条件的必备件库列表
     *
     * @param bo 查询条件
     * @return 必备件库列表
     */
    List<IsfdModelManagementNecessaryItemsVo> queryList(IsfdModelManagementNecessaryItemsBo bo);

    List<IsfdModelManagementNecessaryItemsVo> queryListByCalculateId(Long calculateId);

    /**
     * 保存必备件库
     */
    Boolean save(MultipartFile multipartFile, String fullNumbers, String remark) throws IOException;

    /**
     * 校验并批量删除必备件库信息
     *
     * @param ids 待删除的主键集合
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 删除前查询，有问题抛异常提示前端
     *
     * @param ids
     */
    String preDelete(Collection<Long> ids);

    /**
     * 批量查询必备件数据
     *
     * @param ids
     * @return
     */
    List<IsfdModelManagementNecessaryItemsVo> queryByBatchIds(List<Long> ids);
}
